[小ネタ] ECS Fargate でコンテナのタイムゾーンを変更する方法
アノテーション・テクニカルサポートチームの hato です。
「ECS Fargate でコンテナ内のタイムゾーンを JST(日本標準時)に変更したい」とお問い合わせをいただくことがあり、変更する方法を少し調べてみました。
「環境変数:TZ」をお試しください
ベースイメージやアプリケーション次第ですが、環境変数TZ
と、その値としてタイムゾーン(例:Asia/Tokyo
)を指定すると、任意のタイムゾーンとなります。
環境変数を設定する方法は
- ECS タスク定義で指定する方法
- Dockerfile の ENV 命令で指定する方法
があります。
ECS タスク定義で指定
コンテナ定義の環境変数として、次の値を設定します
# キー TZ # 値(任意のタイムゾーン) Asia/Tokyo
なお、環境変数(environment)の設定はdocker run
の--env
マッピングされます。
Dockerfile の ENV 命令 で指定する方法
タスク定義と設定する内容は同じですが、Dockerfile で設定します。
FROM public.ecr.aws/amazonlinux/amazonlinux:2023 # タイムゾーンを JST に ENV TZ Asia/Tokyo
環境変数:TZ で変更されない場合もあります
Alpine Linux 等の一部ベースイメージは 環境変数:TZ では変更されないためご注意ください。
変更する方法はベースイメージのドキュメント等をご確認ください。
FROM public.ecr.aws/docker/library/alpine:latest # タイムゾーンを JST に RUN apk --no-cache add tzdata && cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
参考資料
- man date (1): システムの日付や時刻の表示、設定を行う
- Dockerfile リファレンス — Docker-docs-ja 1.11.0 ドキュメント
- 仮想化されたコンテナーのタイム ゾーン | Microsoft Learn
アノテーション株式会社について
アノテーション株式会社はクラスメソッドグループのオペレーション専門特化企業です。サポート・運用・開発保守・情シス・バックオフィスの専門チームが、最新 IT テクノロジー、高い技術力、蓄積されたノウハウをフル活用し、お客様の課題解決を行っています。当社は様々な職種でメンバーを募集しています。「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、アノテーション株式会社 採用サイトをぜひご覧ください。